#-*- coding: utf-8 -*-

'''
autor1: João Reis, Nº5236
autor2: Miguel Romão, Nº5513
data: 9 de Novembro 2013
obs: Criação dos gráficos das pesquisas
'''

import matplotlib.pyplot as plt
import numpy as np
import random

class Graficos:
	'''
		Esta classe cria os gráficos das estatísticas.
	'''

	def grafico_estatistica_perm(self, lista_permilagem):
		'''
			Função que gera um gráfico tarte para a estatística sobre a 
			permilagem de alunos colocados por distrito.

			Args:
					lista_permilagem: lista de pares compostos por nome do 
					distrito e permilagem de alunos colocados por distrito.
					
		'''  
		explode = [] # lista para os valores da expansão dos pedaços do gráfico
		lista_perm = [] # lista para os valores da permilagem
		lista_dist = [] # lista para os nomes dos distritos
		
			
		for x in xrange(len(lista_permilagem)):
			lista_dist.append(lista_permilagem[x][0].decode('utf-8'))
			lista_perm.append(lista_permilagem[x][1])
			explode.append(0.1)
			
		def autopct(pct):
			total = sum(lista_perm)
			val = int((pct * total / 100.0) + 0.5)
			return '{v:d}'.format(v = val)
		
		# uma paleta de cores para evitar que ele escolha cores aleatórias e 
		# calhe a cor preta porque não se consegue ver os números
		colors = ['red', 'green', 'blue', 'yellow', 'orange', 'pink', 'cyan', 
		'grey', 'yellowgreen', 'skyblue', 'gold', 'violet', 'tan', 'brown', 
		'magenta', 'lavender', 'plum', 'salmon', 'aquamarine', 'beige']

		plt.pie(lista_perm, explode=explode, labels=lista_dist, colors=colors, 
			autopct=autopct)
		plt.title ('Permilagem de alunos por Distrito'.decode('utf-8'))
		plt.show()

	def grafico_estatistica_col(self, lista_inst_colocados):
		'''
			Função que gera um gráfico de barras para a estatística
			sobre o número de alunos colocados por instituto.

			Args:
					lista_inst_colocados: lista de grupos compostos por número 
					da instituição, nome da instituição e o número de alunos 
					colocados por instituição.
		'''

		lista_inst = []
		lista_col = []
		cores=[]

		for x in xrange(len(lista_inst_colocados)):
			lista_inst.append(lista_inst_colocados[x][1])
			lista_col.append(lista_inst_colocados[x][2])
			cores.append([random.random(), random.random(), random.random()])

		x_pos=np.arange(len(lista_col))

		plt.bar(x_pos, lista_col, width = 0.5, align='center', alpha = 0.4, color=cores)
		x2 = len(lista_col)
		y2 = max(lista_col) + 10
		plt.axis([-0.5, x2, 0, y2], pickradius=10)
		plt.xlabel('Instituições'.decode('utf-8'))
		plt.ylabel('Número de alunos colocados'.decode('utf-8'))
		plt.title('Número de alunos colocados por instituição'.decode('utf-8'))
		plt.show()



